package com.example.forum.utils;

import com.example.forum.model.Article;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;

import javax.annotation.Resource;
import java.util.List;
@Configuration
public class RedisListUtil {
    @Resource
    private RedisTemplate<String,Article> redisTemplate;
    /**
     *
     * @param key   redis的key
     * @param articleList   要存储到redis中的List
     */
    public void saveListToRedis(String key, List<Article> articleList) {
        // 将List中的自定义对象插入到Redis的List中（右边）
        redisTemplate.opsForList().rightPushAll(key, articleList);
    }

    /**
     *
     * @param key redis中的key
     * @return 拿到key的List
     */
    public List<Article> getListFromRedis(String key) {
        // 获取Redis中指定key的List的所有元素
        return redisTemplate.opsForList().range(key, 0, -1);
    }

    /**
     * 判断key是否有数据
     * @param key
     * @return  有数据返回true  没有数据返回false
     */
    public boolean keyExists(String key) {
        // 使用RedisTemplate的hasKey()方法来判断键是否存在
        return redisTemplate.hasKey(key);
    }


    /**
     * 覆盖Redis中指定key的List，用新的List替代原有List
     * @param key Redis中的key
     * @param newArticleList 要覆盖原有List的新List
     */
    public void overwriteListInRedis(String key, List<Article> newArticleList) {
        // 删除原有的List
        redisTemplate.delete(key);
        // 将新的List插入到Redis中（右边）
        redisTemplate.opsForList().rightPushAll(key, newArticleList);
    }
}
